home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / kyugo.c < prev    next >
C/C++ Source or Header  |  2000-05-25  |  43KB  |  1,022 lines

  1. /***************************************************************************
  2.  
  3. This driver supports the following games:
  4.  
  5. Gyrodine - (c) 1984 Taito Corporation.
  6. Son of Phoenix - (c) 1985 Associated Overseas MFR, Inc.
  7. Repulse - (c) 1985 Sega
  8. '99 The last war - (c) 1985 Proma
  9. Flash Gal - (c) 1985 Sega
  10. SRD Mission - (c) 1986 Taito Corporation.
  11. Air Wolf - (c) 1987 Kyugo
  12.  
  13.  
  14. Preliminary driver by:
  15. Ernesto Corvi
  16. someone@secureshell.com
  17.  
  18. Notes:
  19. - attract mode in Son of Phoenix doesn't work
  20.  
  21. ***************************************************************************/
  22.  
  23. #include "driver.h"
  24. #include "vidhrdw/generic.h"
  25. #include "cpu/z80/z80.h"
  26.  
  27. /* from vidhrdw */
  28. extern unsigned char *kyugo_videoram;
  29. extern size_t kyugo_videoram_size;
  30. extern unsigned char *kyugo_back_scrollY_lo;
  31. extern unsigned char *kyugo_back_scrollX;
  32. WRITE_HANDLER( kyugo_gfxctrl_w );
  33. WRITE_HANDLER( kyugo_flipscreen_w );
  34. void kyugo_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  35. void kyugo_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  36.  
  37.  
  38. static unsigned char *shared_ram;
  39.  
  40. static READ_HANDLER( shared_ram_r )
  41. {
  42.     return shared_ram[offset];
  43. }
  44.  
  45. static WRITE_HANDLER( shared_ram_w )
  46. {
  47.     shared_ram[offset] = data;
  48. }
  49.  
  50. static READ_HANDLER( special_spriteram_r )
  51. {
  52.     /* RAM is 4 bits wide, must set the high bits to 1 for the RAM test to pass */
  53.     return spriteram_2[offset] | 0xf0;
  54. }
  55.  
  56.  
  57.  
  58. /* time to abuse the preprocessor for the memory/port maps */
  59.  
  60. #define Main_MemMap( name, shared, watchdog )                                        \
  61.     static struct MemoryReadAddress name##_readmem[] = {                            \
  62.         { 0x0000, 0x7fff, MRA_ROM },                                                \
  63.         { 0x8000, 0x87ff, videoram_r }, /* background tiles */                        \
  64.         { 0x8800, 0x8fff, colorram_r }, /* background color */                        \
  65.         { 0x9000, 0x97ff, MRA_RAM }, /* foreground tiles */                            \
  66.         { 0x9800, 0x9fff, special_spriteram_r },    /* 4 bits wide */                \
  67.         { 0xa000, 0xa7ff, MRA_RAM }, /* sprites */                                    \
  68.         { shared, shared+0x7ff, shared_ram_r }, /* shared RAM */                    \
  69.         { 0xf800, 0xffff, shared_ram_r }, /* shared mirror always here */            \
  70.         { -1 }    /* end of table */                                                    \
  71.     };                                                                                \
  72.                                                                                     \
  73.     static struct MemoryWriteAddress name##_writemem[] = {                            \
  74.         { 0x0000, 0x7fff, MWA_ROM },                                                \
  75.         { 0x8000, 0x87ff, videoram_w, &videoram, &videoram_size },                    \
  76.         { 0x8800, 0x8fff, colorram_w, &colorram },                                    \
  77.         { 0x9000, 0x97ff, MWA_RAM, &kyugo_videoram, &kyugo_videoram_size },    \
  78.         { 0x9800, 0x9fff, MWA_RAM, &spriteram_2 },    /* 4 bits wide */                \
  79.         { 0xa000, 0xa7ff, MWA_RAM, &spriteram, &spriteram_size },                    \
  80.         { 0xa800, 0xa800, MWA_RAM, &kyugo_back_scrollY_lo }, /* back scroll Y */    \
  81.         { 0xb000, 0xb000, kyugo_gfxctrl_w }, /* back scroll MSB + other stuff */    \
  82.         { 0xb800, 0xb800, MWA_RAM, &kyugo_back_scrollX }, /* back scroll X */     \
  83.         { shared, shared+0x7ff, shared_ram_w, &shared_ram }, /* shared RAM */        \
  84.         { 0xf800, 0xffff, shared_ram_w }, /* shared mirror always here */            \
  85.         { watchdog, watchdog, watchdog_reset_w },                                \
  86.         { -1 }    /* end of table */                                                    \
  87.     };
  88.  
  89. #define Sub_MemMap( name, rom_end, shared, extra_ram, in0, in1, in2 )    \
  90.     static struct MemoryReadAddress name##_sub_readmem[] = {            \
  91.         { 0x0000, rom_end, MRA_ROM },                                    \
  92.         { shared, shared+0x7ff, shared_ram_r }, /* shared RAM */        \
  93.         { extra_ram, extra_ram+0x7ff, MRA_RAM }, /* extra RAM */        \
  94.         { in0, in0, input_port_2_r }, /* input port */                    \
  95.         { in1, in1, input_port_3_r }, /* input port */                    \
  96.         { in2, in2, input_port_4_r }, /* input port */                    \
  97.         { -1 }    /* end of table */                                        \
  98.     };                                                                    \
  99.                                                                         \
  100.     static struct MemoryWriteAddress name##_sub_writemem[] = {            \
  101.         { 0x0000, rom_end, MWA_ROM },                                    \
  102.         { shared, shared+0x7ff, shared_ram_w }, /* shared RAM */        \
  103.         { extra_ram, extra_ram+0x7ff, MWA_RAM }, /* extra RAM */        \
  104.         { -1 }    /* end of table */                                        \
  105.     };
  106.  
  107. /* actual definitions */
  108. Main_MemMap( gyrodine, 0xf000, 0xe000 )
  109. Main_MemMap( sonofphx, 0xf000, 0x0000 )
  110. Main_MemMap( flashgal, 0xf000, 0x0000 )
  111. Main_MemMap( srdmissn, 0xe000, 0x0000 )
  112. Sub_MemMap( gyrodine, 0x1fff, 0x4000, 0x0000, 0x8080, 0x8040, 0x8000 )
  113. Sub_MemMap( sonofphx, 0x7fff, 0xa000, 0x0000, 0xc080, 0xc040, 0xc000 )
  114. Sub_MemMap( flashgal, 0x7fff, 0xa000, 0x0000, 0xc080, 0xc040, 0xc000 )
  115. Sub_MemMap( srdmissn, 0x7fff, 0x8000, 0x8800, 0xf400, 0xf401, 0xf402 )
  116.  
  117. static WRITE_HANDLER( sub_cpu_control_w )
  118. {
  119.     if (data & 1)
  120.         cpu_set_reset_line(1,CLEAR_LINE);
  121.     else
  122.         cpu_set_reset_line(1,ASSERT_LINE);
  123. }
  124.  
  125. #define Main_PortMap( name, base )                                \
  126.     static struct IOReadPort name##_readport[] = {                \
  127.         { -1 }    /* end of table */                                \
  128.     };                                                            \
  129.                                                                 \
  130.     static struct IOWritePort name##_writeport[] = {            \
  131.         { base+0, base+0, interrupt_enable_w },                    \
  132.         { base+1, base+1, kyugo_flipscreen_w },                \
  133.         { base+2, base+2, sub_cpu_control_w },                    \
  134.         { -1 }    /* end of table */                                \
  135.     };
  136.  
  137. #define Sub_PortMap( name, ay0_base, ay1_base )                    \
  138.     static struct IOReadPort name##_sub_readport[] = {            \
  139.         { ay0_base+2, ay0_base+2, AY8910_read_port_0_r },        \
  140.         { -1 }    /* end of table */                                \
  141.     };                                                            \
  142.                                                                 \
  143.     static struct IOWritePort name##_sub_writeport[] = {        \
  144.         { ay0_base+0, ay0_base+0, AY8910_control_port_0_w },    \
  145.         { ay0_base+1, ay0_base+1, AY8910_write_port_0_w },        \
  146.         { ay1_base+0, ay1_base+0, AY8910_control_port_1_w },    \
  147.         { ay1_base+1, ay1_base+1, AY8910_write_port_1_w },        \
  148.         { -1 }    /* end of table */                                \
  149.     };
  150.  
  151. /* actual definitions */
  152. Main_PortMap( gyrodine, 0x00 )
  153. Main_PortMap( sonofphx, 0x00 )
  154. Main_PortMap( flashgal, 0x40 )
  155. Main_PortMap( srdmissn, 0x08 )
  156. Sub_PortMap( gyrodine, 0x00, 0xc0 )
  157. Sub_PortMap( sonofphx, 0x00, 0x40 )
  158. Sub_PortMap( flashgal, 0x00, 0x40 )
  159. Sub_PortMap( srdmissn, 0x80, 0x84 )
  160.  
  161. /***************************************************************************
  162.  
  163.     Input Ports
  164.  
  165. ***************************************************************************/
  166.  
  167. #define START_COINS \
  168.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) \
  169.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) \
  170.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) \
  171.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) \
  172.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START2 )
  173.  
  174. #define JOYSTICK_1 \
  175.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY ) \
  176.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY ) \
  177.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY ) \
  178.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY ) \
  179.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) \
  180.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  181.  
  182. #define JOYSTICK_2 \
  183.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL ) \
  184.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL ) \
  185.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL ) \
  186.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL ) \
  187.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL ) \
  188.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL )
  189.  
  190. #define COIN_A_B \
  191.     PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \
  192.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) ) \
  193.     PORT_DIPSETTING(    0x01, DEF_STR( 3C_2C ) ) \
  194.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) ) \
  195.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) ) \
  196.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) ) \
  197.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) ) \
  198.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_6C ) ) \
  199.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) ) \
  200.     PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) \
  201.     PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) ) \
  202.     PORT_DIPSETTING(    0x08, DEF_STR( 4C_1C ) ) \
  203.     PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
  204.     PORT_DIPSETTING(    0x18, DEF_STR( 2C_1C ) ) \
  205.     PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) ) \
  206.     PORT_DIPSETTING(    0x20, DEF_STR( 3C_4C ) ) \
  207.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_2C ) ) \
  208.     PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) )
  209.  
  210. INPUT_PORTS_START( gyrodine )
  211.     PORT_START      /* DSW1 */
  212.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  213.     PORT_DIPSETTING(    0x03, "3" )
  214.     PORT_DIPSETTING(    0x02, "4" )
  215.     PORT_DIPSETTING(    0x01, "5" )
  216.     PORT_DIPSETTING(    0x00, "6" )
  217.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  218.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  219.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  220.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  221.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  222.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  223.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )
  224.     PORT_DIPSETTING(    0x10, "Easy" )
  225.     PORT_DIPSETTING(    0x00, "Hard" )
  226.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  227.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  228.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  229.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  230.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  231.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  232.     PORT_DIPNAME( 0x80, 0x80, "Freeze" )
  233.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  234.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  235.  
  236.     PORT_START      /* DSW2 */
  237.     COIN_A_B
  238.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  239.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  240.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  241.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  242.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  243.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  244.  
  245.     PORT_START    /* IN0 */
  246.     START_COINS
  247.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  248.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  249.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  250.  
  251.     PORT_START    /* IN1 */
  252.     JOYSTICK_1
  253.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  254.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  255.  
  256.     PORT_START    /* IN2 */
  257.     JOYSTICK_2
  258.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  259.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  260. INPUT_PORTS_END
  261.  
  262. INPUT_PORTS_START( sonofphx )
  263.     PORT_START      /* DSW1 */
  264.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  265.     PORT_DIPSETTING(    0x03, "3" )
  266.     PORT_DIPSETTING(    0x02, "4" )
  267.     PORT_DIPSETTING(    0x01, "5" )
  268.     PORT_DIPSETTING(    0x00, "6" )
  269.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) )
  270.     PORT_DIPSETTING(    0x04, "Every 50000" )
  271.     PORT_DIPSETTING(    0x00, "Every 70000" )
  272.     PORT_DIPNAME( 0x08, 0x08, "Slow Motion" )
  273.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  274.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  275.     PORT_BITX(0x10,     0x10, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  276.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  277.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  278.     PORT_DIPNAME( 0x20, 0x20, "Sound Test" )
  279.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  280.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  281.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  282.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  283.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  284.     PORT_DIPNAME( 0x80, 0x80, "Freeze" )
  285.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  286.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  287.  
  288.     PORT_START      /* DSW2 */
  289.     COIN_A_B
  290.     PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Difficulty ) )
  291.     PORT_DIPSETTING(    0xc0, "Easy" )
  292.     PORT_DIPSETTING(    0x80, "Normal" )
  293.     PORT_DIPSETTING(    0x40, "Hard" )
  294.     PORT_DIPSETTING(    0x00, "Hardest" )
  295.  
  296.     PORT_START    /* IN0 */
  297.     START_COINS
  298.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  299.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  300.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  301.  
  302.     PORT_START    /* IN1 */
  303.     JOYSTICK_1
  304.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  305.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  306.  
  307.     PORT_START    /* IN2 */
  308.     JOYSTICK_2
  309.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  310.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  311. INPUT_PORTS_END
  312.  
  313. INPUT_PORTS_START( airwolf )
  314.     PORT_START      /* DSW1 */
  315.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  316.     PORT_DIPSETTING(    0x03, "4" )
  317.     PORT_DIPSETTING(    0x02, "5" )
  318.     PORT_DIPSETTING(    0x01, "6" )
  319.     PORT_DIPSETTING(    0x00, "7" )
  320.     PORT_DIPNAME( 0x04, 0x00, "Allow Continue" )
  321.     PORT_DIPSETTING(    0x04, DEF_STR( No ) )
  322.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  323.     PORT_DIPNAME( 0x08, 0x08, "Slow Motion" )
  324.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  325.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  326.     PORT_BITX(0x10,     0x10, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  327.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  328.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  329.     PORT_DIPNAME( 0x20, 0x20, "Sound Test" )
  330.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  331.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  332.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  333.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  334.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  335.     PORT_DIPNAME( 0x80, 0x80, "Freeze" )
  336.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  337.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  338.  
  339.     PORT_START      /* DSW2 */
  340.     COIN_A_B
  341.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  342.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  343.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  344.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  345.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  346.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  347.  
  348.     PORT_START    /* IN0 */
  349.     START_COINS
  350.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  351.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  352.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  353.  
  354.     PORT_START    /* IN1 */
  355.     JOYSTICK_1
  356.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  357.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  358.  
  359.     PORT_START    /* IN2 */
  360.     JOYSTICK_2
  361.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  362.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  363. INPUT_PORTS_END
  364.  
  365. INPUT_PORTS_START( flashgal )
  366.     PORT_START      /* DSW1 */
  367.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  368.     PORT_DIPSETTING(    0x03, "3" )
  369.     PORT_DIPSETTING(    0x02, "4" )
  370.     PORT_DIPSETTING(    0x01, "5" )
  371.     PORT_DIPSETTING(    0x00, "6" )
  372.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Bonus_Life ) )
  373.     PORT_DIPSETTING(    0x04, "Every 50000" )
  374.     PORT_DIPSETTING(    0x00, "Every 70000" )
  375.     PORT_DIPNAME( 0x08, 0x08, "Slow Motion" )
  376.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  377.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  378.     PORT_DIPNAME( 0x10, 0x00, "Allow Continue" )
  379.     PORT_DIPSETTING(    0x10, DEF_STR( No ) )
  380.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  381.     PORT_DIPNAME( 0x20, 0x20, "Sound Test" )
  382.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  383.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  384.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  385.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  386.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  387.     PORT_DIPNAME( 0x80, 0x80, "Freeze" )
  388.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  389.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  390.  
  391.     PORT_START      /* DSW2 */
  392.     COIN_A_B
  393.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  394.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  395.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  396.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  397.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  398.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  399.  
  400.     PORT_START    /* IN0 */
  401.     START_COINS
  402.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  403.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  404.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  405.  
  406.     PORT_START    /* IN1 */
  407.     JOYSTICK_1
  408.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  409.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  410.  
  411.     PORT_START    /* IN2 */
  412.     JOYSTICK_2
  413.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  414.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  415. INPUT_PORTS_END
  416.  
  417. INPUT_PORTS_START( skywolf )
  418.     PORT_START      /* DSW1 */
  419.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  420.     PORT_DIPSETTING(    0x03, "3" )
  421.     PORT_DIPSETTING(    0x02, "4" )
  422.     PORT_DIPSETTING(    0x01, "5" )
  423.     PORT_DIPSETTING(    0x00, "6" )
  424.     PORT_DIPNAME( 0x04, 0x00, "Allow Continue" )
  425.     PORT_DIPSETTING(    0x04, DEF_STR( No ) )
  426.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  427.     PORT_DIPNAME( 0x08, 0x08, "Slow Motion" )
  428.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  429.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  430.     PORT_BITX(0x10,     0x10, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  431.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  432.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  433.     PORT_DIPNAME( 0x20, 0x20, "Sound Test" )
  434.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  435.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  436.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  437.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  438.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  439.     PORT_DIPNAME( 0x80, 0x80, "Freeze" )
  440.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  441.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  442.  
  443.     PORT_START      /* DSW2 */
  444.     COIN_A_B
  445.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  446.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  447.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  448.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  449.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  450.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  451.  
  452.     PORT_START    /* IN0 */
  453.     START_COINS
  454.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  455.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  456.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  457.  
  458.     PORT_START    /* IN1 */
  459.     JOYSTICK_1
  460.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  461.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  462.  
  463.     PORT_START    /* IN2 */
  464.     JOYSTICK_2
  465.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  466.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  467. INPUT_PORTS_END
  468.  
  469. INPUT_PORTS_START( srdmissn )
  470.     PORT_START      /* DSW1 */
  471.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  472.     PORT_DIPSETTING(    0x03, "3" )
  473.     PORT_DIPSETTING(    0x02, "4" )
  474.     PORT_DIPSETTING(    0x01, "5" )
  475.     PORT_DIPSETTING(    0x00, "6" )
  476.     PORT_DIPNAME( 0x04, 0x04, "Bonus Life/Continue" )
  477.     PORT_DIPSETTING(    0x04, "Every 50000/No" )
  478.     PORT_DIPSETTING(    0x00, "Every 70000/Yes" )
  479.     PORT_DIPNAME( 0x08, 0x08, "Slow Motion" )
  480.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  481.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  482.     PORT_BITX(0x10,     0x10, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  483.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  484.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  485.     PORT_DIPNAME( 0x20, 0x20, "Sound Test" )
  486.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  487.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  488.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  489.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  490.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  491.     PORT_DIPNAME( 0x80, 0x80, "Freeze" )
  492.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  493.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  494.  
  495.     PORT_START      /* DSW2 */
  496.     COIN_A_B
  497.     PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Unknown ) )
  498.     PORT_DIPSETTING(    0xc0, "Easy" )
  499.     PORT_DIPSETTING(    0x80, "Normal" )
  500.     PORT_DIPSETTING(    0x40, "Hard" )
  501.     PORT_DIPSETTING(    0x00, "Hardest" )
  502.  
  503.     PORT_START    /* IN0 */
  504.     START_COINS
  505.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  506.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  507.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  508.  
  509.     PORT_START    /* IN1 */
  510.     JOYSTICK_1
  511.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  512.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  513.  
  514.     PORT_START    /* IN2 */
  515.     JOYSTICK_2
  516.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  517.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  518. INPUT_PORTS_END
  519.  
  520. /***************************************************************************
  521.  
  522.     Graphics Decoding
  523.  
  524. ***************************************************************************/
  525.  
  526. static struct GfxLayout charlayout =
  527. {
  528.     8,8,           /* 8*8 characters */
  529.     256,           /* 256 characters */
  530.     2,             /* 2 bits per pixel */
  531.     { 0, 4 },
  532.     { 0, 1, 2, 3, 8*8+0, 8*8+1, 8*8+2, 8*8+3 },
  533.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  534.     16*8           /* every char takes 16 bytes */
  535. };
  536.  
  537. static struct GfxLayout spritelayout =
  538. {
  539.     16,16,    /* 16*16 sprites */
  540.     1024,    /* 1024 sprites */
  541.     3,        /* 3 bits per pixel */
  542.     { 0*1024*32*8, 1*1024*32*8, 2*1024*32*8 },    /* the bitplanes are separated */
  543.     { 0, 1, 2, 3, 4, 5, 6, 7,
  544.         8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
  545.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  546.             16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
  547.     32*8    /* every sprite takes 32 consecutive bytes */
  548. };
  549.  
  550. static struct GfxLayout tilelayout =
  551. {
  552.     8,8,    /* 16*16 tiles */
  553.     1024,    /* 1024 tiles */
  554.     3,        /* 3 bits per pixel */
  555.     { 0*1024*8*8, 1*1024*8*8, 2*1024*8*8 },    /* the bitplanes are separated */
  556.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  557.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  558.     8*8    /* every tile takes 32 consecutive bytes */
  559. };
  560.  
  561. static struct GfxDecodeInfo gfxdecodeinfo[] =
  562. {
  563.     { REGION_GFX1, 0, &charlayout,        0, 64 },
  564.     { REGION_GFX2, 0, &spritelayout,    0, 32 },
  565.     { REGION_GFX3, 0, &tilelayout,        0, 32 },
  566.     { -1 } /* end of array */
  567. };
  568.  
  569.  
  570.  
  571. /***************************************************************************
  572.  
  573.     Sound Interface
  574.  
  575. ***************************************************************************/
  576.  
  577. static struct AY8910interface ay8910_interface =
  578. {
  579.     2,      /* 2 chips */
  580.     1500000,        /* 1.5 MHz ? */
  581.     { 30, 30 },
  582.     { input_port_0_r, 0 },
  583.     { input_port_1_r, 0 },
  584.     { 0, 0 },
  585.     { 0, 0 }
  586. };
  587.  
  588. /***************************************************************************
  589.  
  590.     Machine Driver
  591.  
  592. ***************************************************************************/
  593.  
  594. #define Machine_Driver( name ) \
  595. static struct MachineDriver machine_driver_##name =                                            \
  596. {                                                                                            \
  597.     {                                                                                        \
  598.         {                                                                                    \
  599.             CPU_Z80,                                                                        \
  600.             18432000 / 4,    /* 18.432 MHz crystal */                                        \
  601.             name##_readmem,name##_writemem,name##_readport,name##_writeport,                \
  602.             nmi_interrupt,1                                                                    \
  603.         },                                                                                    \
  604.         {                                                                                    \
  605.             CPU_Z80,                                                                        \
  606.             18432000 / 4,    /* 18.432 MHz crystal */                                        \
  607.             name##_sub_readmem,name##_sub_writemem,name##_sub_readport,name##_sub_writeport,\
  608.             interrupt,4                                                                        \
  609.         }                                                                                    \
  610.     },                                                                                        \
  611.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */        \
  612.     100,    /* cpu interleaving */                                                            \
  613.     0,                                                                                        \
  614.                                                                                             \
  615.     /* video hardware */                                                                    \
  616.     64*8, 32*8, { 0*8, 36*8-1, 2*8, 30*8-1 },                                                \
  617.     gfxdecodeinfo,                                                                            \
  618.     256, 256,                                                                                \
  619.     kyugo_vh_convert_color_prom,                                                            \
  620.                                                                                             \
  621.     VIDEO_TYPE_RASTER,                                                                        \
  622.     0,                                                                                        \
  623.     generic_vh_start,                                                                        \
  624.     generic_vh_stop,                                                                        \
  625.     kyugo_vh_screenrefresh,                                                                    \
  626.                                                                                             \
  627.     /* sound hardware */                                                                    \
  628.     0,0,0,0,                                                                                \
  629.     {                                                                                        \
  630.         {                                                                                    \
  631.             SOUND_AY8910,                                                                    \
  632.             &ay8910_interface                                                                \
  633.         }                                                                                    \
  634.     }                                                                                        \
  635. };
  636.  
  637. /* actual definitions */
  638. Machine_Driver( gyrodine )
  639. Machine_Driver( sonofphx )
  640. Machine_Driver( srdmissn )
  641. Machine_Driver( flashgal )
  642.  
  643. /***************************************************************************
  644.  
  645.   Game ROMs
  646.  
  647. ***************************************************************************/
  648.  
  649. ROM_START( gyrodine )
  650.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  651.     ROM_LOAD( "a21.02", 0x0000, 0x2000, 0xc5ec4a50 )
  652.     ROM_LOAD( "a21.03", 0x2000, 0x2000, 0x4e9323bd )
  653.     ROM_LOAD( "a21.04", 0x4000, 0x2000, 0x57e659d4 )
  654.     ROM_LOAD( "a21.05", 0x6000, 0x2000, 0x1e7293f3 )
  655.  
  656.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  657.     ROM_LOAD( "a21.01", 0x0000, 0x2000, 0xb2ce0aa2 )
  658.  
  659.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  660.     ROM_LOAD( "a21.15", 0x00000, 0x1000, 0xadba18d0 ) /* chars */
  661.  
  662.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  663.     ROM_LOAD( "a21.14", 0x00000, 0x2000, 0x9c5c4d5b ) /* sprites - plane 0 */
  664.     /* 0x03000-0x04fff empty */
  665.     ROM_LOAD( "a21.13", 0x04000, 0x2000, 0xd36b5aad ) /* sprites - plane 0 */
  666.     /* 0x07000-0x08fff empty */
  667.     ROM_LOAD( "a21.12", 0x08000, 0x2000, 0xf387aea2 ) /* sprites - plane 1 */
  668.     /* 0x0b000-0x0cfff empty */
  669.     ROM_LOAD( "a21.11", 0x0c000, 0x2000, 0x87967d7d ) /* sprites - plane 1 */
  670.     /* 0x0f000-0x10fff empty */
  671.     ROM_LOAD( "a21.10", 0x10000, 0x2000, 0x59640ab4 ) /* sprites - plane 2 */
  672.     /* 0x13000-0x14fff empty */
  673.     ROM_LOAD( "a21.09", 0x14000, 0x2000, 0x22ad88d8 ) /* sprites - plane 2 */
  674.     /* 0x17000-0x18fff empty */
  675.  
  676.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  677.     ROM_LOAD( "a21.08", 0x00000, 0x2000, 0xa57df1c9 ) /* tiles - plane 0 */
  678.     ROM_LOAD( "a21.07", 0x02000, 0x2000, 0x63623ba3 ) /* tiles - plane 1 */
  679.     ROM_LOAD( "a21.06", 0x04000, 0x2000, 0x4cc969a9 ) /* tiles - plane 2 */
  680.  
  681.     ROM_REGION( 0x0340, REGION_PROMS )
  682.     ROM_LOAD( "a21.16", 0x0000, 0x0100, 0xcc25fb56 ) /* red */
  683.     ROM_LOAD( "a21.17", 0x0100, 0x0100, 0xca054448 ) /* green */
  684.     ROM_LOAD( "a21.18", 0x0200, 0x0100, 0x23c0c449 ) /* blue */
  685.     ROM_LOAD( "a21.20", 0x0300, 0x0020, 0xefc4985e ) /* char lookup table */
  686.     ROM_LOAD( "a21.19", 0x0320, 0x0020, 0x83a39201 ) /* timing? (not used) */
  687. ROM_END
  688.  
  689. ROM_START( sonofphx )
  690.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  691.     ROM_LOAD( "5.f4",   0x0000, 0x2000, 0xe0d2c6cf )
  692.     ROM_LOAD( "6.h4",   0x2000, 0x2000, 0x3a0d0336 )
  693.     ROM_LOAD( "7.j4",   0x4000, 0x2000, 0x57a8e900 )
  694.  
  695.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  696.     ROM_LOAD( "1.f2",   0x0000, 0x2000, 0xc485c621 )
  697.     ROM_LOAD( "2.h2",   0x2000, 0x2000, 0xb3c6a886 )
  698.     ROM_LOAD( "3.j2",   0x4000, 0x2000, 0x197e314c )
  699.     ROM_LOAD( "4.k2",   0x6000, 0x2000, 0x4f3695a1 )
  700.  
  701.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  702.     ROM_LOAD( "14.4a",  0x00000, 0x1000, 0xb3859b8b ) /* chars */
  703.  
  704.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  705.     ROM_LOAD( "8.6a",   0x00000, 0x4000, 0x0e9f757e ) /* sprites - plane 0 */
  706.     ROM_LOAD( "9.7a",   0x04000, 0x4000, 0xf7d2e650 ) /* sprites - plane 0 */
  707.     ROM_LOAD( "10.8a",  0x08000, 0x4000, 0xe717baf4 ) /* sprites - plane 1 */
  708.     ROM_LOAD( "11.9a",  0x0c000, 0x4000, 0x04b2250b ) /* sprites - plane 1 */
  709.     ROM_LOAD( "12.10a", 0x10000, 0x4000, 0xd110e140 ) /* sprites - plane 2 */
  710.     ROM_LOAD( "13.11a", 0x14000, 0x4000, 0x8fdc713c ) /* sprites - plane 2 */
  711.  
  712.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  713.     ROM_LOAD( "15.9h",  0x00000, 0x2000, 0xc9213469 ) /* tiles - plane 0 */
  714.     ROM_LOAD( "16.10h", 0x02000, 0x2000, 0x7de5d39e ) /* tiles - plane 1 */
  715.     ROM_LOAD( "17.11h", 0x04000, 0x2000, 0x0ba5f72c ) /* tiles - plane 2 */
  716.  
  717.     ROM_REGION( 0x0340, REGION_PROMS )
  718.     ROM_LOAD( "r.1f",   0x0200, 0x0100, 0xb7f48b41 ) /* red */
  719.     ROM_LOAD( "g.1h",   0x0100, 0x0100, 0xacd7a69e ) /* green */
  720.     ROM_LOAD( "b.1j",   0x0000, 0x0100, 0x3ea35431 ) /* blue */
  721.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  722.     ROM_LOAD( "2c",     0x0320, 0x0020, 0x83a39201 ) /* timing? (not used) */
  723. ROM_END
  724.  
  725. ROM_START( repulse )
  726.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  727.     ROM_LOAD( "repulse.b5",   0x0000, 0x2000, 0xfb2b7c9d )
  728.     ROM_LOAD( "repulse.b6",   0x2000, 0x2000, 0x99129918 )
  729.     ROM_LOAD( "7.j4",         0x4000, 0x2000, 0x57a8e900 )
  730.  
  731.     ROM_REGION( 0x10000, REGION_CPU2  ) /* 64k for code */
  732.     ROM_LOAD( "1.f2",         0x0000, 0x2000, 0xc485c621 )
  733.     ROM_LOAD( "2.h2",         0x2000, 0x2000, 0xb3c6a886 )
  734.     ROM_LOAD( "3.j2",         0x4000, 0x2000, 0x197e314c )
  735.     ROM_LOAD( "repulse.b4",   0x6000, 0x2000, 0x86b267f3 )
  736.  
  737.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  738.     ROM_LOAD( "repulse.a11",  0x00000, 0x1000, 0x8e1de90a ) /* chars */
  739.  
  740.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  741.     ROM_LOAD( "8.6a",         0x00000, 0x4000, 0x0e9f757e ) /* sprites - plane 0 */
  742.     ROM_LOAD( "9.7a",         0x04000, 0x4000, 0xf7d2e650 ) /* sprites - plane 0 */
  743.     ROM_LOAD( "10.8a",        0x08000, 0x4000, 0xe717baf4 ) /* sprites - plane 1 */
  744.     ROM_LOAD( "11.9a",        0x0c000, 0x4000, 0x04b2250b ) /* sprites - plane 1 */
  745.     ROM_LOAD( "12.10a",       0x10000, 0x4000, 0xd110e140 ) /* sprites - plane 2 */
  746.     ROM_LOAD( "13.11a",       0x14000, 0x4000, 0x8fdc713c ) /* sprites - plane 2 */
  747.  
  748.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  749.     ROM_LOAD( "15.9h",        0x00000, 0x2000, 0xc9213469 ) /* tiles - plane 0 */
  750.     ROM_LOAD( "16.10h",       0x02000, 0x2000, 0x7de5d39e ) /* tiles - plane 1 */
  751.     ROM_LOAD( "17.11h",       0x04000, 0x2000, 0x0ba5f72c ) /* tiles - plane 2 */
  752.  
  753.     ROM_REGION( 0x0340, REGION_PROMS )
  754.     ROM_LOAD( "r.1f",         0x0200, 0x0100, 0xb7f48b41 ) /* red */
  755.     ROM_LOAD( "g.1h",         0x0100, 0x0100, 0xacd7a69e ) /* green */
  756.     ROM_LOAD( "b.1j",         0x0000, 0x0100, 0x3ea35431 ) /* blue */
  757.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  758.     ROM_LOAD( "2c",           0x0320, 0x0020, 0x83a39201 ) /* timing? (not used) */
  759. ROM_END
  760.  
  761. ROM_START( 99lstwar )
  762.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  763.     ROM_LOAD( "1999.4f",      0x0000, 0x2000, 0xe3cfc09f )
  764.     ROM_LOAD( "1999.4h",      0x2000, 0x2000, 0xfd58c6e1 )
  765.     ROM_LOAD( "7.j4",         0x4000, 0x2000, 0x57a8e900 )
  766.  
  767.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  768.     ROM_LOAD( "1.f2",         0x0000, 0x2000, 0xc485c621 )
  769.     ROM_LOAD( "2.h2",         0x2000, 0x2000, 0xb3c6a886 )
  770.     ROM_LOAD( "3.j2",         0x4000, 0x2000, 0x197e314c )
  771.     ROM_LOAD( "repulse.b4",   0x6000, 0x2000, 0x86b267f3 )
  772.  
  773.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  774.     ROM_LOAD( "1999.4a",      0x00000, 0x1000, 0x49a2383e ) /* chars */
  775.  
  776.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  777.     ROM_LOAD( "8.6a",         0x00000, 0x4000, 0x0e9f757e ) /* sprites - plane 0 */
  778.     ROM_LOAD( "9.7a",         0x04000, 0x4000, 0xf7d2e650 ) /* sprites - plane 0 */
  779.     ROM_LOAD( "10.8a",        0x08000, 0x4000, 0xe717baf4 ) /* sprites - plane 1 */
  780.     ROM_LOAD( "11.9a",        0x0c000, 0x4000, 0x04b2250b ) /* sprites - plane 1 */
  781.     ROM_LOAD( "12.10a",       0x10000, 0x4000, 0xd110e140 ) /* sprites - plane 2 */
  782.     ROM_LOAD( "13.11a",       0x14000, 0x4000, 0x8fdc713c ) /* sprites - plane 2 */
  783.  
  784.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  785.     ROM_LOAD( "15.9h",        0x00000, 0x2000, 0xc9213469 ) /* tiles - plane 0 */
  786.     ROM_LOAD( "16.10h",       0x02000, 0x2000, 0x7de5d39e ) /* tiles - plane 1 */
  787.     ROM_LOAD( "17.11h",       0x04000, 0x2000, 0x0ba5f72c ) /* tiles - plane 2 */
  788.  
  789.     ROM_REGION( 0x0340, REGION_PROMS )
  790.     ROM_LOAD( "r.1f",         0x0200, 0x0100, 0xb7f48b41 ) /* red */
  791.     ROM_LOAD( "g.1h",         0x0100, 0x0100, 0xacd7a69e ) /* green */
  792.     ROM_LOAD( "b.1j",         0x0000, 0x0100, 0x3ea35431 ) /* blue */
  793.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  794.     ROM_LOAD( "2c",           0x0320, 0x0020, 0x83a39201 ) /* timing? (not used) */
  795. ROM_END
  796.  
  797. ROM_START( 99lstwra )
  798.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  799.     ROM_LOAD( "4f.bin",       0x0000, 0x2000, 0xefe2908d )
  800.     ROM_LOAD( "4h.bin",       0x2000, 0x2000, 0x5b79c342 )
  801.     ROM_LOAD( "4j.bin",       0x4000, 0x2000, 0xd2a62c1b )
  802.  
  803.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  804.     ROM_LOAD( "2f.bin",       0x0000, 0x2000, 0xcb9d8291 )
  805.     ROM_LOAD( "2h.bin",       0x2000, 0x2000, 0x24dbddc3 )
  806.     ROM_LOAD( "2j.bin",       0x4000, 0x2000, 0x16879c4c )
  807.     ROM_LOAD( "repulse.b4",   0x6000, 0x2000, 0x86b267f3 )
  808.  
  809.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  810.     ROM_LOAD( "1999.4a",      0x00000, 0x1000, 0x49a2383e ) /* chars */
  811.  
  812.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  813.     ROM_LOAD( "6a.bin",       0x00000, 0x4000, 0x98d44410 ) /* sprites - plane 0 */
  814.     ROM_LOAD( "7a.bin",       0x04000, 0x4000, 0x4c54d281 ) /* sprites - plane 0 */
  815.     ROM_LOAD( "8a.bin",       0x08000, 0x4000, 0x81018101 ) /* sprites - plane 1 */
  816.     ROM_LOAD( "9a.bin",       0x0c000, 0x4000, 0x347b91fd ) /* sprites - plane 1 */
  817.     ROM_LOAD( "10a.bin",      0x10000, 0x4000, 0xf07de4fa ) /* sprites - plane 2 */
  818.     ROM_LOAD( "11a.bin",      0x14000, 0x4000, 0x34a04f48 ) /* sprites - plane 2 */
  819.  
  820.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  821.     ROM_LOAD( "9h.bin",       0x00000, 0x2000, 0x59993c27 ) /* tiles - plane 0 */
  822.     ROM_LOAD( "10h.bin",      0x02000, 0x2000, 0xdfbf0280 ) /* tiles - plane 1 */
  823.     ROM_LOAD( "11h.bin",      0x04000, 0x2000, 0xe4f29fc0 ) /* tiles - plane 2 */
  824.  
  825.     ROM_REGION( 0x0340, REGION_PROMS )
  826.     ROM_LOAD( "r.1f",         0x0200, 0x0100, 0xb7f48b41 ) /* red */
  827.     ROM_LOAD( "g.1h",         0x0100, 0x0100, 0xacd7a69e ) /* green */
  828.     ROM_LOAD( "b.1j",         0x0000, 0x0100, 0x3ea35431 ) /* blue */
  829.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  830.     ROM_LOAD( "2c",           0x0320, 0x0020, 0x83a39201 ) /* timing? (not used) */
  831. ROM_END
  832.  
  833. ROM_START( flashgal )
  834.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  835.     ROM_LOAD( "15.4f",        0x0000, 0x2000, 0xcf5ad733 )
  836.     ROM_LOAD( "16.4h",        0x2000, 0x2000, 0x00c4851f )
  837.     ROM_LOAD( "17.4j",        0x4000, 0x2000, 0x1ef0b8f7 )
  838.     ROM_LOAD( "18.4k",        0x6000, 0x2000, 0x885d53de )
  839.  
  840.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  841.     ROM_LOAD( "11.2f",        0x0000, 0x2000, 0xeee2134d )
  842.     ROM_LOAD( "12.2h",        0x2000, 0x2000, 0xe5e0cd22 )
  843.     ROM_LOAD( "13.2j",        0x4000, 0x2000, 0x4cd3fe5e )
  844.     ROM_LOAD( "14.2k",        0x6000, 0x2000, 0x552ca339 )
  845.  
  846.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  847.     ROM_LOAD( "19.4b",        0x00000, 0x1000, 0xdca9052f ) /* chars */
  848.  
  849.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  850.     ROM_LOAD( "20.6b",        0x00000, 0x4000, 0x62caf2a1 ) /* sprites - plane 0 */
  851.     ROM_LOAD( "21.7b",        0x04000, 0x4000, 0x10f78a10 ) /* sprites - plane 0 */
  852.     ROM_LOAD( "22.8b",        0x08000, 0x4000, 0x36ea1d59 ) /* sprites - plane 1 */
  853.     ROM_LOAD( "23.9b",        0x0c000, 0x4000, 0xf527d837 ) /* sprites - plane 1 */
  854.     ROM_LOAD( "24.10b",       0x10000, 0x4000, 0xba76e4c1 ) /* sprites - plane 2 */
  855.     ROM_LOAD( "25.11b",       0x14000, 0x4000, 0xf095d619 ) /* sprites - plane 2 */
  856.  
  857.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  858.     ROM_LOAD( "26.9h",        0x00000, 0x2000, 0x2f5b62c0 ) /* tiles - plane 0 */
  859.     ROM_LOAD( "27.10h",       0x02000, 0x2000, 0x8fbb49b5 ) /* tiles - plane 1 */
  860.     ROM_LOAD( "28.11h",       0x04000, 0x2000, 0x26a8e5c3 ) /* tiles - plane 2 */
  861.  
  862.     ROM_REGION( 0x0340, REGION_PROMS )
  863.     ROM_LOAD( "flashgal.prr", 0x0000, 0x0100, 0x02c4043f ) /* red */
  864.     ROM_LOAD( "flashgal.prg", 0x0100, 0x0100, 0x225938d1 ) /* green */
  865.     ROM_LOAD( "flashgal.prb", 0x0200, 0x0100, 0x1e0a1cd3 ) /* blue */
  866.     ROM_LOAD( "flashgal.pr2", 0x0300, 0x0020, 0xcce2e29f ) /* char lookup table */
  867.     ROM_LOAD( "flashgal.pr1", 0x0320, 0x0020, 0x83a39201 ) /* timing? (not used) */
  868. ROM_END
  869.  
  870. ROM_START( srdmissn )
  871.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  872.     ROM_LOAD( "5.t2",   0x0000, 0x4000, 0xa682b48c )
  873.     ROM_LOAD( "7.t3",   0x4000, 0x4000, 0x1719c58c )
  874.  
  875.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  876.     ROM_LOAD( "1.t7",   0x0000, 0x4000, 0xdc48595e )
  877.     ROM_LOAD( "3.t8",   0x4000, 0x4000, 0x216be1e8 )
  878.  
  879.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  880.     ROM_LOAD( "15.4a",  0x00000, 0x1000, 0x4961f7fd ) /* chars */
  881.  
  882.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  883.     ROM_LOAD( "14.6a",  0x00000, 0x4000, 0x3d4c0447 ) /* sprites - plane 0 */
  884.     ROM_LOAD( "13.7a",  0x04000, 0x4000, 0x22414a67 ) /* sprites - plane 0 */
  885.     ROM_LOAD( "12.8a",  0x08000, 0x4000, 0x61e34283 ) /* sprites - plane 1 */
  886.     ROM_LOAD( "11.9a",  0x0c000, 0x4000, 0xbbbaffef ) /* sprites - plane 1 */
  887.     ROM_LOAD( "10.10a", 0x10000, 0x4000, 0xde564f97 ) /* sprites - plane 2 */
  888.     ROM_LOAD( "9.11a",  0x14000, 0x4000, 0x890dc815 ) /* sprites - plane 2 */
  889.  
  890.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  891.     ROM_LOAD( "17.9h",  0x00000, 0x2000, 0x41211458 ) /* tiles - plane 1 */
  892.     ROM_LOAD( "18.10h", 0x02000, 0x2000, 0x740eccd4 ) /* tiles - plane 0 */
  893.     ROM_LOAD( "16.11h", 0x04000, 0x2000, 0xc1f4a5db ) /* tiles - plane 2 */
  894.  
  895.     ROM_REGION( 0x0340, REGION_PROMS )
  896.     ROM_LOAD( "mr.1j",  0x0000, 0x0100, 0x110a436e ) /* red */
  897.     ROM_LOAD( "mg.1h",  0x0100, 0x0100, 0x0fbfd9f0 ) /* green */
  898.     ROM_LOAD( "mb.1f",  0x0200, 0x0100, 0xa342890c ) /* blue */
  899.     ROM_LOAD( "m2.5j",  0x0300, 0x0020, 0x190a55ad ) /* char lookup table */
  900.     ROM_LOAD( "m1.2c",  0x0320, 0x0020, 0x83a39201 ) /* timing? not used */
  901. ROM_END
  902.  
  903. ROM_START( airwolf )
  904.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  905.     ROM_LOAD( "b.2s",        0x0000, 0x8000, 0x8c993cce )
  906.  
  907.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  908.     ROM_LOAD( "a.7s",        0x0000, 0x8000, 0xa3c7af5c )
  909.  
  910.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  911.     ROM_LOAD( "f.4a",        0x00000, 0x1000, 0x4df44ce9 ) /* chars */
  912.  
  913.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  914.     ROM_LOAD( "e.6a",        0x00000, 0x2000, 0xe8fbc7d2 ) /* sprites - plane 0 */
  915.     ROM_CONTINUE(            0x04000, 0x2000 )
  916.     ROM_CONTINUE(            0x02000, 0x2000 )
  917.     ROM_CONTINUE(            0x06000, 0x2000 )
  918.     ROM_LOAD( "d.8a",        0x08000, 0x2000, 0xc5d4156b ) /* sprites - plane 1 */
  919.     ROM_CONTINUE(            0x0c000, 0x2000 )
  920.     ROM_CONTINUE(            0x0a000, 0x2000 )
  921.     ROM_CONTINUE(            0x0e000, 0x2000 )
  922.     ROM_LOAD( "c.10a",       0x10000, 0x2000, 0xde91dfb1 ) /* sprites - plane 2 */
  923.     ROM_CONTINUE(            0x14000, 0x2000 )
  924.     ROM_CONTINUE(            0x12000, 0x2000 )
  925.     ROM_CONTINUE(            0x16000, 0x2000 )
  926.  
  927.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  928.     ROM_LOAD( "09h_14.bin",  0x00000, 0x2000, 0x25e57e1f ) /* tiles - plane 1 */
  929.     ROM_LOAD( "10h_13.bin",  0x02000, 0x2000, 0xcf0de5e9 ) /* tiles - plane 0 */
  930.     ROM_LOAD( "11h_12.bin",  0x04000, 0x2000, 0x4050c048 ) /* tiles - plane 2 */
  931.  
  932.     ROM_REGION( 0x0340, REGION_PROMS )
  933.     ROM_LOAD( "01j.bin",     0x0000, 0x0100, 0x6a94b2a3 ) /* red */
  934.     ROM_LOAD( "01h.bin",     0x0100, 0x0100, 0xec0923d3 ) /* green */
  935.     ROM_LOAD( "01f.bin",     0x0200, 0x0100, 0xade97052 ) /* blue */
  936.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  937.     ROM_LOAD( "02c_m1.bin",  0x0320, 0x0020, 0x83a39201 ) /* timing? not used */
  938. ROM_END
  939.  
  940. ROM_START( skywolf )
  941.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  942.     ROM_LOAD( "02s_03.bin",  0x0000, 0x4000, 0xa0891798 )
  943.     ROM_LOAD( "03s_04.bin",  0x4000, 0x4000, 0x5f515d46 )
  944.  
  945.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  946.     ROM_LOAD( "07s_01.bin",  0x0000, 0x4000, 0xc680a905 )
  947.     ROM_LOAD( "08s_02.bin",  0x4000, 0x4000, 0x3d66bf26 )
  948.  
  949.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  950.     ROM_LOAD( "04a_11.bin",  0x00000, 0x1000, 0x219de9aa ) /* chars */
  951.  
  952.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  953.     ROM_LOAD( "06a_10.bin",  0x00000, 0x4000, 0x1c809383 ) /* sprites - plane 0 */
  954.     ROM_LOAD( "07a_09.bin",  0x04000, 0x4000, 0x5665d774 ) /* sprites - plane 0 */
  955.     ROM_LOAD( "08a_08.bin",  0x08000, 0x4000, 0x6dda8f2a ) /* sprites - plane 1 */
  956.     ROM_LOAD( "09a_07.bin",  0x0c000, 0x4000, 0x6a21ddb8 ) /* sprites - plane 1 */
  957.     ROM_LOAD( "10a_06.bin",  0x10000, 0x4000, 0xf2e548e0 ) /* sprites - plane 2 */
  958.     ROM_LOAD( "11a_05.bin",  0x14000, 0x4000, 0x8681b112 ) /* sprites - plane 2 */
  959.  
  960.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  961.     ROM_LOAD( "09h_14.bin",  0x00000, 0x2000, 0x25e57e1f ) /* tiles - plane 1 */
  962.     ROM_LOAD( "10h_13.bin",  0x02000, 0x2000, 0xcf0de5e9 ) /* tiles - plane 0 */
  963.     ROM_LOAD( "11h_12.bin",  0x04000, 0x2000, 0x4050c048 ) /* tiles - plane 2 */
  964.  
  965.     ROM_REGION( 0x0340, REGION_PROMS )
  966.     ROM_LOAD( "01j.bin",     0x0000, 0x0100, 0x6a94b2a3 ) /* red */
  967.     ROM_LOAD( "01h.bin",     0x0100, 0x0100, 0xec0923d3 ) /* green */
  968.     ROM_LOAD( "01f.bin",     0x0200, 0x0100, 0xade97052 ) /* blue */
  969.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  970.     ROM_LOAD( "02c_m1.bin",  0x0320, 0x0020, 0x83a39201 ) /* timing? not used */
  971. ROM_END
  972.  
  973. ROM_START( skywolf2 )
  974.     ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
  975.     ROM_LOAD( "z80_2.bin",   0x0000, 0x8000, 0x34db7bda )
  976.  
  977.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for code */
  978.     ROM_LOAD( "07s_01.bin",  0x0000, 0x4000, 0xc680a905 )
  979.     ROM_LOAD( "08s_02.bin",  0x4000, 0x4000, 0x3d66bf26 )
  980.  
  981.     ROM_REGION( 0x01000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  982.     ROM_LOAD( "04a_11.bin",  0x00000, 0x1000, 0x219de9aa ) /* chars */
  983.  
  984.     ROM_REGION( 0x18000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  985.     ROM_LOAD( "06a_10.bin",  0x00000, 0x4000, 0x1c809383 ) /* sprites - plane 0 */
  986.     ROM_LOAD( "07a_09.bin",  0x04000, 0x4000, 0x5665d774 ) /* sprites - plane 0 */
  987.     ROM_LOAD( "08a_08.bin",  0x08000, 0x4000, 0x6dda8f2a ) /* sprites - plane 1 */
  988.     ROM_LOAD( "09a_07.bin",  0x0c000, 0x4000, 0x6a21ddb8 ) /* sprites - plane 1 */
  989.     ROM_LOAD( "10a_06.bin",  0x10000, 0x4000, 0xf2e548e0 ) /* sprites - plane 2 */
  990.     ROM_LOAD( "11a_05.bin",  0x14000, 0x4000, 0x8681b112 ) /* sprites - plane 2 */
  991.  
  992.     ROM_REGION( 0x06000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  993.     ROM_LOAD( "09h_14.bin",  0x00000, 0x2000, 0x25e57e1f ) /* tiles - plane 1 */
  994.     ROM_LOAD( "10h_13.bin",  0x02000, 0x2000, 0xcf0de5e9 ) /* tiles - plane 0 */
  995.     ROM_LOAD( "11h_12.bin",  0x04000, 0x2000, 0x4050c048 ) /* tiles - plane 2 */
  996.  
  997.     ROM_REGION( 0x0340, REGION_PROMS )
  998.     ROM_LOAD( "01j.bin",     0x0000, 0x0100, 0x6a94b2a3 ) /* red */
  999.     ROM_LOAD( "01h.bin",     0x0100, 0x0100, 0xec0923d3 ) /* green */
  1000.     ROM_LOAD( "01f.bin",     0x0200, 0x0100, 0xade97052 ) /* blue */
  1001.     /* 0x0300-0x031f empty - looks like there isn't a lookup table PROM */
  1002.     ROM_LOAD( "02c_m1.bin",  0x0320, 0x0020, 0x83a39201 ) /* timing? not used */
  1003. ROM_END
  1004.  
  1005.  
  1006. /***************************************************************************
  1007.  
  1008.   Game driver(s)
  1009.  
  1010. ***************************************************************************/
  1011.  
  1012. GAME( 1984, gyrodine, 0,        gyrodine, gyrodine, 0, ROT90, "Taito Corporation", "Gyrodine" )
  1013. GAME( 1985, sonofphx, 0,        sonofphx, sonofphx, 0, ROT90, "Associated Overseas MFR, Inc", "Son of Phoenix" )
  1014. GAME( 1985, repulse,  sonofphx, sonofphx, sonofphx, 0, ROT90, "Sega", "Repulse" )
  1015. GAME( 1985, 99lstwar, sonofphx, sonofphx, sonofphx, 0, ROT90, "Proma", "'99 The Last War" )
  1016. GAME( 1985, 99lstwra, sonofphx, sonofphx, sonofphx, 0, ROT90, "Proma", "'99 The Last War (alternate)" )
  1017. GAME( 1985, flashgal, 0,        flashgal, flashgal, 0, ROT0,  "Sega", "Flash Gal" )
  1018. GAME( 1986, srdmissn, 0,        srdmissn, srdmissn, 0, ROT90, "Taito Corporation", "S.R.D. Mission" )
  1019. GAME( 1987, airwolf,  0,        srdmissn, airwolf,  0, ROT0,  "Kyugo", "Air Wolf" )
  1020. GAME( 1987, skywolf,  airwolf,  srdmissn, skywolf,  0, ROT0,  "bootleg", "Sky Wolf (set 1)" )
  1021. GAME( 1987, skywolf2, airwolf,  srdmissn, airwolf,  0, ROT0,  "bootleg", "Sky Wolf (set 2)" )
  1022.